package org.example.xsda.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 文件信息表
 * 
 * 文件类型(fileType):
 * - certificate: 证书（奖学金、荣誉证书等）
 * - medical: 医疗证明（休学需要）
 * - transfer: 转学证明
 * - id_card: 身份证
 * - photo: 照片
 * - academic: 学籍材料
 * - other: 其他
 * 
 * 审核状态(auditStatus):
 * 0 - 待审核（需要校级审核的文件）
 * 1 - 审核通过
 * 2 - 审核驳回
 */
@Data
@TableName("file_info")
public class FileInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 主键ID */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 文件名 */
    private String fileName;

    /** OSS存储路径 */
    private String fileUrl;

    /** 文件大小（字节） */
    private Long fileSize;

    /** 文件类型：certificate-证书 medical-医疗证明 transfer-转学证明 id_card-身份证 photo-照片 academic-学籍材料 other-其他 */
    private String fileType;

    /** 审核状态：0-待审核 1-审核通过 2-审核驳回 */
    private Integer auditStatus;

    /** 审核意见 */
    private String auditRemark;

    /** 审核人ID */
    private Long auditorId;

    /** 审核时间 */
    private LocalDateTime auditTime;

    /** 是否需要校级审核：0-否 1-是 */
    private Integer approvalRequired;

    /** 关联的审批ID */
    private Long approvalId;

    /** 关联学生ID */
    private Long studentId;

    /** 文件分类：approval-审批附件 archive-档案附件 certificate-证书材料 */
    private String category;

    /** 上传人ID */
    private Long uploadUser;

    /** 创建时间 */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /** 更新时间 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /** 逻辑删除 */
    @TableLogic
    private Integer deleted;
}

